Only in linux.jon/drivers/sound: ad1848.c^
diff -r -u linux/drivers/sound/audio.c linux.jon/drivers/sound/audio.c
--- linux/drivers/sound/audio.c	Mon Jul 18 07:50:55 1994
+++ linux.jon/drivers/sound/audio.c	Fri Dec  9 12:03:44 1994
@@ -173,6 +173,7 @@
   p = 0;
   c = count;
 
+
   if (audio_mode[dev] == AM_READ)	/*
 					 * Direction changed
 					 */
Only in linux.jon/drivers/sound: audio.c^
Binary files linux/drivers/sound/configure and linux.jon/drivers/sound/configure differ
diff -r -u linux/drivers/sound/dmabuf.c linux.jon/drivers/sound/dmabuf.c
--- linux/drivers/sound/dmabuf.c	Tue Aug 23 07:48:52 1994
+++ linux.jon/drivers/sound/dmabuf.c	Fri Dec  9 12:34:04 1994
@@ -443,7 +443,9 @@
       {
 	int             fact = IOCTL_IN (arg);
 	int             bytes, count;
+	extern int sb_16bit_fake;
 
+
 	if (fact == 0)
 	  return RET_ERROR (EIO);
 
@@ -452,6 +454,9 @@
 	  return RET_ERROR (EINVAL);
 
 	bytes = fact & 0xffff;
+	if (sb_16bit_fake)
+	   bytes--;
+
 	count = (fact >> 16) & 0xffff;
 
 	if (count == 0)
Only in linux.jon/drivers/sound: dmabuf.c^
Binary files linux/drivers/sound/dmabuf.o and linux.jon/drivers/sound/dmabuf.o differ
Only in linux.jon/drivers/sound: int
diff -r -u linux/drivers/sound/sb_dsp.c linux.jon/drivers/sound/sb_dsp.c
--- linux/drivers/sound/sb_dsp.c	Fri Aug 19 06:54:09 1994
+++ linux.jon/drivers/sound/sb_dsp.c	Fri Dec  9 12:45:07 1994
@@ -40,6 +40,7 @@
 #undef SB_TEST_IRQ
 
 int             sbc_base = 0;
+int		sb_16bit_fake = 1;
 static int      sbc_irq = 0;
 static int      open_mode = 0;	/* Read, write or both */
 
@@ -94,6 +95,27 @@
 
 #if !defined(EXCLUDE_MIDI) || !defined(EXCLUDE_AUDIO)
 
+
+void
+sb_16_8_copy_from_user(int dev, char *localbuf, int localoffs,
+		       snd_rw_buf * userbuf, int useroffs, int len)
+{
+  int i;
+  unsigned short in;
+  unsigned char  *out = &localbuf[localoffs];
+
+  if (sb_16bit_fake) {
+    for(i=0;i<len;i++)  {
+       GET_SHORT_FROM_USER (in, (short *) userbuf, useroffs);
+       useroffs ++;
+       in ^= 0x8000;
+       out[i] = (in>>8);
+    }
+  } else {
+      COPY_FROM_USER (&localbuf[localoffs], userbuf, useroffs, len);
+  }
+
+}
 /*
  * Common code for the midi and pcm functions
  */
@@ -739,7 +761,7 @@
 {
   "SoundBlaster",
   NOTHING_SPECIAL,
-  AFMT_U8,			/* Just 8 bits. Poor old SB */
+  AFMT_U8 | AFMT_S16_LE,			/* Just 8 bits. Poor old SB */
   NULL,
   sb_dsp_open,
   sb_dsp_close,
@@ -751,7 +773,7 @@
   sb_dsp_reset,
   sb_dsp_halt_xfer,
   NULL,				/* local_qlen */
-  NULL				/* copy_from_user */
+  sb_16_8_copy_from_user	/* copy_from_user */
 };
 
 #endif
Only in linux.jon/drivers/sound: sb_dsp.c^
Binary files linux/drivers/sound/sb_dsp.o and linux.jon/drivers/sound/sb_dsp.o differ
Binary files linux/drivers/sound/sound.a and linux.jon/drivers/sound/sound.a differ
diff -r -u linux/drivers/sound/sound_config.h linux.jon/drivers/sound/sound_config.h
--- linux/drivers/sound/sound_config.h	Fri Aug 19 06:54:10 1994
+++ linux.jon/drivers/sound/sound_config.h	Fri Dec  9 19:10:17 1994
@@ -193,7 +193,7 @@
 #define SND_DEV_SEQ2	8	/* /dev/sequencer, level 2 interface */
 #define SND_DEV_SNDPROC 9	/* /dev/sndproc for programmable devices */
 #define SND_DEV_PSS	SND_DEV_SNDPROC
-
+#define SND_DEV_DSP16_8	11	/* Like /dev/dsp but emulate 16 bits/sample */
 #define DSP_DEFAULT_SPEED	8000
 
 #define ON		1
Only in linux.jon/drivers/sound: sound_config.h^
diff -r -u linux/drivers/sound/sound_switch.c linux.jon/drivers/sound/sound_switch.c
--- linux/drivers/sound/sound_switch.c	Mon Jul 18 07:50:55 1994
+++ linux.jon/drivers/sound/sound_switch.c	Fri Dec  9 19:23:37 1994
@@ -52,6 +52,7 @@
 static char    *status_buf = NULL;
 static int      status_len, status_ptr;
 static int      status_busy = 0;
+extern int sb_16bit_fake;
 
 static int
 put_status (char *s)
@@ -286,6 +287,7 @@
       break;
 
     case SND_DEV_DSP:
+    case SND_DEV_DSP16_8:
     case SND_DEV_DSP16:
     case SND_DEV_AUDIO:
       return audio_read (dev, file, buf, count);
@@ -316,7 +318,6 @@
 int
 sound_write_sw (int dev, struct fileinfo *file, snd_rw_buf * buf, int count)
 {
-
   DEB (printk ("sound_write_sw(dev=%d, count=%d)\n", dev, count));
 
   switch (dev & 0x0f)
@@ -327,11 +328,13 @@
       return sequencer_write (dev, file, buf, count);
       break;
 
-    case SND_DEV_DSP:
+
+    case SND_DEV_DSP16_8:
+	  return (2* audio_write (dev, file, buf, count/2));
     case SND_DEV_DSP16:
     case SND_DEV_AUDIO:
-      return audio_write (dev, file, buf, count);
-      break;
+    case SND_DEV_DSP:
+	return audio_write (dev, file, buf, count);
 
 #ifndef EXCLUDE_MIDI
     case SND_DEV_MIDIN:
@@ -398,10 +401,15 @@
 	return retval;
       break;
 #endif
-
-    case SND_DEV_DSP:
+    case SND_DEV_DSP16_8:
+	sb_16bit_fake = 1;
+        if ((retval = audio_open (((dev & 0xfffffff0) | SND_DEV_DSP), file)) < 0)
+		return retval;
+	break;
     case SND_DEV_DSP16:
+    case SND_DEV_DSP:
     case SND_DEV_AUDIO:
+      sb_16bit_fake = 0;
       if ((retval = audio_open (dev, file)) < 0)
 	return retval;
       break;
@@ -454,6 +462,7 @@
 
     case SND_DEV_DSP:
     case SND_DEV_DSP16:
+    case SND_DEV_DSP16_8:
     case SND_DEV_AUDIO:
       audio_release (dev, file);
       break;
@@ -501,6 +510,7 @@
 
     case SND_DEV_DSP:
     case SND_DEV_DSP16:
+    case SND_DEV_DSP16_8:
     case SND_DEV_AUDIO:
       return audio_ioctl (dev, file, cmd, arg);
       break;
Only in linux.jon/drivers/sound: sound_switch.c^
Binary files linux/drivers/sound/sound_switch.o and linux.jon/drivers/sound/sound_switch.o differ
Only in linux.jon/drivers/sound: soundcard.c^
